package eShop.network;

import java.io.IOException;
import java.net.*;
import java.io.*;

import eShop.businesslogic.EShopVerw;

class SConnector extends Thread {
    protected Socket         client;
    protected BufferedReader input;
    protected PrintStream    out;

    // 	I/O-Streams initialisieren und Connection-Obj. als Thread starten:
    public SConnector(Socket client_socket, EShopVerw eShop) {
       client = client_socket;
        try { 
     		input = new BufferedReader(new InputStreamReader(client.getInputStream()));
            out   = new PrintStream(client.getOutputStream());
        }
        catch (IOException e) {
            try {client.close(); } catch (IOException e2){ ;}
            System.err.println("-->S: Ausnahme bei Bereitstellung Sockets: " + e);
            return;
        }
        this.start();
    }
    //in der run() Methode des Verbindungsobjektes wird das I/O mit dem Client abgewickelt(das Protokoll der Verbindung)
    public void run() {
          String a=" "; // Aktion-String

    	  System.out.println("Server hat eine Verbindung");  // auf Konsole!

          // erste Nachricht an den Client:
          out.println( "hier ist ihr Server. Geben sie was ein...");

          do {	// Beginn der Benutzerinteraktion:
    		// Aktion vom Client einlesen [ggf. weitere Daten einlesen ...]
      		try {	a=input.readLine();
    		} catch (Exception e) {
    		  	System.out.println( e.getMessage());
    		}

    		// Eingabe bearbeiten:
    		// die einzige Eingabe ist: "ein text..." oder "q"
      		if (a.equals("q")){		// Client will Ende
      			out.println("#");	// Client beenden			
      		} else { 	
      			// HIER SERVER DIENSTE zu a AUFRUFEN:
      			
      			
      			
      			
      			
      			
      			out.println("Echo: "+a+" "+ a);
      			// ENDE SERVER DIENST
      		}
      		} while (!(a.equals("q")));
      	    
      		
      		System.out.println( "Verbindung durch Client abgebrochen");

      	    try {client.close();
      	    } catch (IOException e2) {}
    } // run
}  // class
